'''
操作流程：
1.创建文件对象，打开文件
2，读写
3.关闭文件
open(file, mode='r' encodeing=None)

mode 模式
    1.r (字符串), rb(字节的方式显示)     读取
    2.w , wb    写入 (如果文件之前存在，进行写入模式打开文件时会覆盖其所有内容)
    3.a     追加
    4.r+    读写

read 读取文件所有内容
重复调用不会显示，默认从光标处读取内容

'''

file_name = r"C:\Users\15384\Desktop\test1.txt"
fobj = open(file_name, mode="r")
fobj_test  = fobj.read()
print(fobj_test)
print("-------------")
fobj_test1  = fobj.read()
print(fobj_test1)
#不会显示第二遍，因为第一遍读取文件所有内容，光标已经到达最后一行
#除非关掉文件重新打开
fobj.close()



# -----------------遍历文件内容--------------------
file_name = r"C:\Users\15384\Desktop\test1.txt"
fobj = open(file_name, mode="r")

# for i in fobj:
#     print("每一行： %s" % i)
# fobj.close()
#可以这么写但不建议

with open(file_name,mode="r")as fobj:
    for i in fobj:
        print("每一行： %s" %i )

print("文件关闭？：%s" % fobj.closed)
#建议这个，执行完毕后会自动关闭文件

#------------------写入模式打开文件，适用于新建文件----------------------------
write_file= r"D:\python\work-test\文件操作\file02.txt"

with open(write_file,mode="w") as fobj_w:
    fobj_w.write("python\n")
    fobj_w.write("shell\n")


#-------------------控制光标移动------------------------------------------
'''
前提： 必须以rb模式打开(字节模式)


tell() 返回光标位置

----光标移动工具----
seek(a,b)
    a: 正数，负数 ，光标前后移动
    b: 
        0   将光标移动到文件开头
        1   光标在当前位置不动
        2   将光标移动到文件末尾

'''


file = r"D:\pythonLearn\文件操作\file01.txt"

with open(file, mode="rb") as fobj:
    print("光标位置: %s" % fobj.tell())

    content_01 = fobj.read(4)
    print(content_01)
    print("光标位置: %s" % fobj.tell())

    fobj.seek(0, 2)
    print("光标位置: %s" % fobj.tell())

    fobj.seek(-3, 2)
    content_02 = fobj.read()
    print(content_02)
